﻿using System;
using System.Collections.Generic;
//using System.Linq;
using System.Text;
using BNSharp;

namespace Reticle.Core
{
    public interface IPlugin
    {
        string Author
        {
            get;
        }

        string Name
        {
            get;
        }

        string Description
        {
            get;
        }

        string Filename
        {
            get;
        }

        string URL
        {
            get;
        }

        void Initialize(IHost host);

        void Unload();

        #region Battle.Net Events

        void Connected(object sender, EventArgs e);
        void Disconnected(object sender, EventArgs e);
        void ServerErrorReceived(object sender, ServerChatEventArgs e);
        void InformationReceived(object sender, ServerChatEventArgs e);
        void EnteredChat(object sender, EnteredChatEventArgs e);
        void JoinedChannel(object sender, ServerChatEventArgs e);
        void UserJoined(object sender, UserEventArgs e);
        void UserLeft(object sender, UserEventArgs e);
        void UserShown(object sender, UserEventArgs e);
        void UserFlagsChanged(object sender, UserEventArgs e);
        void UserSpoke(object sender, ChatMessageEventArgs e);
        void UserEmoted(object sender, ChatMessageEventArgs e);
        void MessageSent(object sender, ChatMessageEventArgs e);
        void WhisperReceived(object sender, ChatMessageEventArgs e);
        void WhisperSent(object sender, ChatMessageEventArgs e);

        #endregion
    }
}
